package com.hucsmn.authentication;

import java.io.IOException;
import java.util.Scanner;

/**
 * 作业题四：
 * 使用基于 tcp 协议的编程模型实现将 UserMessage 类型对象由客户端发送给服务器；
 * 服务器接收到对象后判断用户对象信息是否为 "admin" 和 "123456"，
 * 若是则将 UserMessage 对象中的类型改为"success"，否则将类型改为"fail"并回发给客户端，
 * 客户端接收到服务器发来的对象后判断并给出登录成功或者失败的提示。
 * 其中 UserMessage 类的特征有：类型(字符串类型) 和用户对象(User 类型)。
 * 其中 User 类的特征有：用户名、密码(字符串类型)。
 * 如：
 * serMessage tum = new UserMessage("check", new User("admin", "123456"));
 */
public class AuthClientTest {
    public static void main(String[] args) {
        AuthClient client = new AuthClient();

        System.out.println("用户信息认证客户端");
        System.out.println("服务器：" + client.getAddress() + ":" + client.getPort());
        System.out.println();

        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.print("用户名：");
            String username = sc.nextLine().trim();
            if (username.isEmpty()) {
                System.out.println("用户名不能为空！");
                continue;
            }
            System.out.print("密码：");
            String password = sc.nextLine().trim();
            if (password.isEmpty()) {
                System.out.println("密码不能为空！");
                continue;
            }

            User user = new User(username, password);
            try {
                boolean success = client.authenticate(user);
                if (success) {
                    System.out.println("认证成功！");
                } else {
                    System.out.println("认证失败！");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
